Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Rendered • View rawDownload


README.md v4.5.0-rc.1 (62ba0631) Text, 13.85 KB

Reticulum MeshChatX


A extensively modified and feature-rich fork of Reticulum MeshChat by Liam Cottle.

This project is independent from the original Reticulum MeshChat project and is not affiliated with it.

• Website: meshchatx.com
• Official Mirror: github.com/Sudo-Ivan/MeshChatX - Also used for Windows and MacOS builds for the moment.
• Changelog: CHANGELOG.md
• TODO: Boards

Important Changes from Reticulum MeshChat

• Uses LXST
• Replaced Peewee ORM with raw SQL.
• Replaced Axios with native fetch.
• Uses latest Electron.
• .whls ships with webserver and built-in frontend assets for more deployment options.
• i18n
• PNPM and Poetry for dependency management.

│ [!WARNING] MeshChatX is not guaranteed to be wire/data compatible with older Reticulum MeshChat
│ releases. Back up data before migration/testing.

│ [!WARNING] Legacy systems are not fully supported yet. Current baseline is Python T383838>=3.11 and Node
│ T383838>=22 (Electron uses Node 22; CI may use newer).

Requirements

• Python T383838>=3.11 (from T383838pyproject.toml)
• Node.js T383838>=22 (from T383838package.json)
• pnpm T38383810.32.1 (from T383838package.json)
• Poetry (used by T383838Taskfile.yml and CI workflows)

T282828
task install
task lint:all
task test:all
task build:all

Install Methods

Use the method that matches your environment and packaging preference.

┌───────────────────────┬──────────────────────────┬─────────────────────────────────────────┬─────┐
│ Method │ Includes frontend assets │ Architectures │ Be… │
├───────────────────────┼──────────────────────────┼─────────────────────────────────────────┼─────┤
│ Docker image │ Yes │ T383838linux/amd64, T383838linux/arm64 │ Fa… │
│ Python wheel (T383838.whl) │ Yes │ Any Python-supported architecture │ He… │
│ Linux AppImage │ Yes │ T383838x64, T383838arm64 │ Po… │
│ Debian package (T383838.deb) │ Yes │ T383838x64, T383838arm64 │ De… │
│ RPM package (T383838.rpm) │ Yes │ CI-runner dependent for published arti… │ Fe… │
│ From source │ Built locally │ Host architecture │ De… │
└───────────────────────┴──────────────────────────┴─────────────────────────────────────────┴─────┘

Notes:

• The release workflow explicitly builds Linux T383838x64 and T383838arm64 AppImage + DEB.
• RPM is also attempted by release workflow and uploaded when produced.

Quick Start: Docker

T282828
docker compose up -d

Default compose file maps:

• T383838127.0.0.1:8000 on host -> container port T3838388000
• T383838./meshchat-config -> T383838/config for persistence

If your local T383838meshchat-config permissions block writes, fix ownership:

T282828
sudo chown -R T79c0ff1000:1000 ./meshchat-config


Install from Release Artifacts

1) Linux AppImage (x64/arm64)

1. Download T383838ReticulumMeshChatX-v<version>-linux-<arch>.AppImage from releases.
2. Make it executable and run:

T282828
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage

2) Debian/Ubuntu T383838.deb (x64/arm64)

1. Download T383838ReticulumMeshChatX-v<version>-linux-<arch>.deb.
2. Install:

T282828
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb

3) RPM-based systems

1. Download T383838ReticulumMeshChatX-v<version>-linux-<arch>.rpm if present in the release.
2. Install with your distro tool:

T282828
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm

4) Python wheel (T383838.whl)

Release wheels include the built web assets.

T282828
pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless

T383838pipx is also supported:

T282828
pipx install ./reticulum_meshchatx-*-py3-none-any.whl

Run from Source (Web Server Mode)

Use this when developing or when you need a local custom build.

T282828
git clone https://git.quad4.io/RNS-Things/MeshChatX.git
Tffa657cd MeshChatX
corepack Tffa657enable
pnpm install
pip install poetry
poetry install
pnpm run build-frontend
poetry run python -m meshchatx.meshchat --headless --host T79c0ff127.0.0.1


Run sandboxed (Linux)

To run the native T383838meshchatx binary (alias: T383838meshchat) with extra filesystem isolation, you can use Firejail or Bubblewrap (T383838bwrap) while keeping normal network access for Reticulum and the web UI. Full examples (pip/pipx, Poetry, USB serial notes) are in:


The same page appears in the in-app Documentation list (MeshChatX docs) when served from the bundled or synced T383838meshchatx-docs files.

Linux desktop: emoji fonts

The emoji picker renders standard Unicode emoji using your system fonts (Electron/Chromium). If emoji show as empty squares (“tofu”), install a color emoji package and restart the app.

┌────────────────────────────┬──────────────────────────────────────────────────────────────────┐
│ Family (examples) │ Package │
├────────────────────────────┼──────────────────────────────────────────────────────────────────┤
│ Arch Linux, Artix, Manjaro │ T383838noto-fonts-emoji (T383838sudo pacman -S noto-fonts-emoji) │
│ Debian, Ubuntu │ T383838fonts-noto-color-emoji (T383838sudo apt install fonts-noto-color-emoji) │
│ Fedora │ T383838google-noto-emoji-color-fonts
└────────────────────────────┴──────────────────────────────────────────────────────────────────┘

After installing, run T383838fc-cache -fv if glyphs still fail until the next login. Optional: T383838noto-fonts for broader symbol coverage on minimal installs.

Build Desktop Packages from Source

These scripts are defined in T383838package.json and T383838Taskfile.yml.

Linux x64 AppImage + DEB

T282828
pnpm run dist:linux-x64

Linux arm64 AppImage + DEB

T282828
pnpm run dist:linux-arm64

RPM

T282828
pnpm run dist:rpm

Or through Task:

T282828
task dist:fe:rpm

Architecture Support Summary

• Docker image: T383838amd64, T383838arm64
• Linux AppImage: T383838x64, T383838arm64
• Linux DEB: T383838x64, T383838arm64
• Windows: T383838x64, T383838arm64 (build scripts available)
• macOS: build scripts available (T383838arm64, T383838universal) for local build environments
• Android: native APKs — ABIs T383838arm64-v8a, T383838x86_64, plus universal

Android

MeshChatX supports native Android APK builds (not only Termux).

Build APKs from source

From repo root:

T282828
T8b949e# 1) Build Chaquopy wheels used by android/app/build.gradle
bash scripts/build-android-wheels-local.sh

T8b949e# 2) Build both APK variants
Tffa657cd android
./gradlew --no-daemon :app:assembleDebug :app:assembleRelease


APK outputs (ABI splits plus a universal APK; see T383838splits { abi { ... } } in T383838android/app/build.gradle):

Debug (T383838android/app/build/outputs/apk/debug/):

• T383838app-arm64-v8a-debug.apk (ARM64 devices)
• T383838app-x86_64-debug.apk (x86_64 emulators)
• T383838app-universal-debug.apk (all bundled ABIs in one package)

Release (T383838android/app/build/outputs/apk/release/):

• T383838app-arm64-v8a-release-unsigned.apk
• T383838app-x86_64-release-unsigned.apk
• T383838app-universal-release-unsigned.apk

Notes:

• Release outputs are unsigned by default unless you configure signing.
• If you only need one variant, run T383838:app:assembleDebug or T383838:app:assembleRelease.
• Android targets T383838arm64-v8a and T383838x86_64 ABIs as configured in T383838android/app/build.gradle.

Additional docs:


Configuration

MeshChatX supports both CLI args and env vars.

┌────────────────────────┬──────────────────────────────────────┬──────────────┬───────────────────┐
│ Argument │ Environment Variable │ Default │ Description │
├────────────────────────┼──────────────────────────────────────┼──────────────┼───────────────────┤
│ T383838--host │ T383838MESHCHAT_HOST │ T383838127.0.0.1 │ Web server bind … │
│ T383838--port │ T383838MESHCHAT_PORT │ T3838388000 │ Web server port │
│ T383838--no-https │ T383838MESHCHAT_NO_HTTPS │ T383838false │ Disable HTTPS │
│ T383838--ssl-cert / T383838--ssl-key │ T383838MESHCHAT_SSL_CERT / T383838MESHCHAT_SSL_KEY │ (none) │ PEM certificate … │
│ T383838--rns-log-level │ T383838MESHCHAT_RNS_LOG_LEVEL │ (none) │ Reticulum (RNS) … │
│ T383838--headless │ T383838MESHCHAT_HEADLESS │ T383838false │ Do not auto-laun… │
│ T383838--auth │ T383838MESHCHAT_AUTH │ T383838false │ Enable basic auth │
│ T383838--storage-dir │ T383838MESHCHAT_STORAGE_DIR │ T383838./storage │ Data directory │
│ T383838--public-dir │ T383838MESHCHAT_PUBLIC_DIR │ auto/bundled │ Frontend files d… │
└────────────────────────┴──────────────────────────────────────┴──────────────┴───────────────────┘

Branches

┌────────┬─────────────────────────────────────────────────────────────────┐
│ Branch │ Purpose │
├────────┼─────────────────────────────────────────────────────────────────┤
│ T383838master │ Stable releases. Production-ready code only. │
│ T383838dev │ Active development. May contain breaking or incomplete changes. │
└────────┴─────────────────────────────────────────────────────────────────┘

Development

Common tasks from T383838Taskfile.yml:

T282828
task install
task lint:all
task test:all
task build:all

T383838Makefile shortcuts are also available:

┌──────────────┬─────────────────────────────────────────┐
│ Command │ Description │
├──────────────┼─────────────────────────────────────────┤
│ T383838make install │ Install pnpm and poetry dependencies │
│ T383838make run │ Run MeshChatX via poetry │
│ T383838make build │ Build frontend │
│ T383838make lint │ Run eslint and ruff │
│ T383838make test │ Run frontend and backend tests │
│ T383838make clean │ Remove build artifacts and node_modules │
└──────────────┴─────────────────────────────────────────┘

Versioning

Current version in this repo is T3838384.5.0.

• T383838package.json is the JavaScript/Electron version source.
• T383838meshchatx/src/version.py is synced from T383838package.json using:

T282828
pnpm run version:sync

For release consistency, keep version fields aligned where required (T383838package.json, T383838pyproject.toml, T383838meshchatx/__init__.py).

Security

Security and integrity details:

• Built-in integrity checks and HTTPS/WSS defaults in app runtime
• CI scanning workflows in T383838.gitea/workflows/

Adding a Language

Locale discovery is automatic. To add a new language, create a single JSON file:

1. Generate a blank template from T383838en.json:

T282828
python scripts/generate_locale_template.py

This writes T383838locales.json with every key set to an empty string.

2. Rename it to your language code and move it into the locales directory:

T282828
mv locales.json meshchatx/src/frontend/locales/xx.json

3. Set T383838_languageName at the top of the file to the native name of the language (e.g. T383838"Espanol", T383838"Francais"). This is displayed in the language selector.

4. Translate all remaining values.

5. Run T383838pnpm test -- tests/frontend/i18n.test.js --run to verify key parity with T383838en.json.

No other code changes are required. The app, language selector, and tests all discover locales from the T383838meshchatx/src/frontend/locales/ directory at build time.

Credits

Liam Cottle - Original Reticulum MeshChat
RFnexus - micron parser JavaScript work
markqvist - Reticulum, LXMF, LXST

License

Project-owned portions are licensed under 0BSD.
Original upstream portions from Reticulum MeshChat remain under MIT.
See LICENSE for full text and notices.


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────